「Domain Modeling Made Functional」内の要件や用語
要件
B2Bのシステムで、年中注文される
顧客はそのドメインのエキスパート
レスポンスの速度はそこまで求められていない
注文後のこちら側の処理
商品コードが正しいかを確認する
毎月更新されるカタログを参照して確認する
注文用紙にチェックしていき総計を算出する
注文用紙を2枚コピーして3枚にする
発送部用と、請求部用
オリジナルは自分らで管理
用語
order acknowledgment
注文書をスキャンし、お客様にメールで送り、価格と支払額を確認できるようにするワークフローのこと
order
実際の注文
code:purs(hs)
data Order = Order
{ Id :: OrderId
, CustomerId :: CustomerId
, ShippingAddress :: ShippingAddress
, BillingAddress :: BillingAddress
, OrderLines :: List OrderLine
, AmountToBill :: BillingAmount
}
入力に基づき、validatationされ、価格が計算されたもの
quote
見積もり
顧客は商品の見積もりを頼んできたが、実際には発送はしない
このときはコピーなどの処理も行わない
3つのpile
order, quote, invalid order
Order Line
Orderに含まれる1つ1つの商品
「今の商品の値段」ではなく、「受注時の商品の値段」の情報が必要なため、Productそのものではなく、ProductCodeやPriceを持つ
セールとかで一時的な値引きとかあるからねmrsekut.icon
OderLineは、Order集約の一部である
OrderLineが変更されると、自動的にOrderも変更される
code:purs(hs)
data OrderLine = OrderLine
{ Id :: OrderLineId
, OrderId :: OrderId
, ProductCode :: ProductCode
, OrderQuantity :: OrderQuantity
, Price :: Price
}
Orderの状態遷移
p.122
人物名
Ollie
Domain Expertの人
非エンジニア
こいつが依頼している
章末とかにコードが載っている
例えば、p.98~